local os = require 'cfg.structs'
local create_datastream = create_datastream
local cfgs = {}
for _, s in ipairs({
{name='friendhelpinfo', type='cfg.friend.FriendHelpInfo', index='index', output='friend/friendhelpinfo.data', single=false},
{name='idol', type='cfg.friend.Idol', index='id', output='friend/idol.data', single=false},
{name='wildcardsex', type='cfg.common.WildcardSex', index='id', output='common/wildcardsex.data', single=false},
{name='scene', type='cfg.map.Scene', index='name', output='map/scene.data', single=false},
{name='annealitemeffect', type='cfg.equip.AnnealItemEffect', index='id', output='equip/annealitemeffect.data', single=false},
{name='talismanawake', type='cfg.talisman.TalismanAwake', index='id', output='talisman/talismanawake.data', single=false},
{name='bosschallenge', type='cfg.family.BossChallenge', index='bosslevel', output='family/bosschallenge.data', single=false},
{name='rank', type='cfg.bonus.Rank', index='ranktype', output='bonus/rank.data', single=false},
{name='state', type='cfg.fight.State', index='id', output='fight/state.data', single=false},
{name='settingconfig', type='cfg.setting.SettingConfig', index='', output='setting/settingconfig.data', single=true},
{name='petconsume', type='cfg.pet.PetConsume', index='', output='pet/petconsume.data', single=true},
{name='talismanskill', type='cfg.talisman.TalismanSkill', index='id', output='talisman/talismanskill.data', single=false},
{name='plotindex', type='cfg.plot.PlotIndex', index='index', output='plot/plotindex.data', single=false},
{name='familytaskconfig', type='cfg.family.FamilyTaskConfig', index='', output='family/familytaskconfig.data', single=true},
{name='mall', type='cfg.mall.Mall', index='id', output='mall/mall.data', single=false},
{name='climbtowerectype', type='cfg.ectype.ClimbTowerEctype', index='id', output='ectype/climbtowerectype.data', single=false},
{name='talismanconsume', type='cfg.talisman.TalismanConsume', index='consumetype', output='talisman/talismanconsume.data', single=false},
{name='paomadeng', type='cfg.role.Paomadeng', index='', output='role/paomadeng.data', single=true},
{name='systemconfig', type='cfg.system.SystemConfig', index='', output='system/systemconfig.data', single=true},
{name='arenamultipvpbonus', type='cfg.arena.ArenaMultiPvPBonus', index='id', output='arena/arenamultipvpbonus.data', single=false},
{name='equipanneal', type='cfg.equip.EquipAnneal', index='id', output='equip/equipanneal.data', single=false},
{name='teamfight', type='cfg.ectype.TeamFight', index='', output='ectype/teamfight.data', single=true},
{name='continuitylogin', type='cfg.bonus.ContinuityLogin', index='dayscount', output='bonus/continuitylogin.data', single=false},
{name='noviceguidetext', type='cfg.guide.NoviceGuideText', index='id', output='guide/noviceguidetext.data', single=false},
{name='gradeexchange', type='cfg.lottery.GradeExchange', index='cost', output='lottery/gradeexchange.data', single=false},
{name='jadeenhance', type='cfg.equip.JadeEnhance', index='', output='equip/jadeenhance.data', single=true},
{name='chapter', type='cfg.ectype.Chapter', index='chapterid', output='ectype/chapter.data', single=false},
{name='bossfeed', type='cfg.family.BossFeed', index='feedid', output='family/bossfeed.data', single=false},
{name='dialogsound', type='cfg.audio.DialogSound', index='id', output='audio/dialogsound.data', single=false},
{name='familyname', type='cfg.family.FamilyName', index='', output='family/familyname.data', single=true},
{name='highlottery', type='cfg.lottery.HighLottery', index='id', output='lottery/highlottery.data', single=false},
{name='roleconfig', type='cfg.role.RoleConfig', index='', output='role/roleconfig.data', single=true},
{name='dlgshowmode', type='cfg.ui.DlgShowMode', index='index', output='ui/dlgshowmode.data', single=false},
{name='beattackcurve', type='cfg.skill.BeAttackCurve', index='id', output='skill/beattackcurve.data', single=false},
{name='onlinetimebonus', type='cfg.bonus.OnlineTimeBonus', index='onlinetimes', output='bonus/onlinetimebonus.data', single=false},
{name='dailyectypetab', type='cfg.dailyactivity.DailyEctypeTab', index='order', output='dailyactivity/dailyectypetab.data', single=false},
{name='plotconfig', type='cfg.plot.PlotConfig', index='', output='plot/plotconfig.data', single=true},
{name='expmonster', type='cfg.ectype.ExpMonster', index='', output='ectype/expmonster.data', single=true},
{name='audio', type='cfg.audio.Audio', index='id', output='audio/audio.data', single=false},
{name='storydialogsound', type='cfg.audio.StoryDialogSound', index='id', output='audio/storydialogsound.data', single=false},
{name='broadcasttype', type='cfg.common.BroadcastType', index='id', output='common/broadcasttype.data', single=false},
{name='herosets', type='cfg.ectype.HeroSets', index='', output='ectype/herosets.data', single=true},
{name='charge', type='cfg.pay.Charge', index='chargeid', output='pay/charge.data', single=false},
{name='annealcost', type='cfg.equip.AnnealCost', index='type', output='equip/annealcost.data', single=false},
{name='uimainreddot', type='cfg.ui.UIMainRedDot', index='functionname', output='ui/uimainreddot.data', single=false},
{name='skilldescribe', type='cfg.skill.SkillDescribe', index='skillid', output='skill/skilldescribe.data', single=false},
{name='counttype', type='cfg.common.CountType', index='id', output='common/counttype.data', single=false},
{name='talismanexp', type='cfg.talisman.TalismanExp', index='level', output='talisman/talismanexp.data', single=false},
{name='familyteam', type='cfg.ectype.FamilyTeam', index='', output='ectype/familyteam.data', single=true},
{name='team', type='cfg.team.team', index='', output='team/team.data', single=true},
{name='familystation', type='cfg.ectype.FamilyStation', index='', output='ectype/familystation.data', single=true},
{name='exchangeindex', type='cfg.exchange.ExchangeIndex', index='id', output='exchange/exchangeindex.data', single=false},
{name='firstcharge', type='cfg.pay.FirstCharge', index='', output='pay/firstcharge.data', single=true},
{name='moduleunlockcond', type='cfg.ui.moduleunlockcond', index='id', output='ui/moduleunlockcond.data', single=false},
{name='monster', type='cfg.monster.Monster', index='id', output='monster/monster.data', single=false},
{name='arenainfo', type='cfg.arena.ArenaInfo', index='index', output='arena/arenainfo.data', single=false},
{name='bossconfig', type='cfg.family.BossConfig', index='', output='family/bossconfig.data', single=true},
{name='titleevolve', type='cfg.achievement.TitleEvolve', index='titleid', output='achievement/titleevolve.data', single=false},
{name='petconfig', type='cfg.pet.PetConfig', index='', output='pet/petconfig.data', single=true},
{name='itembasic', type='cfg.item.ItemBasic', index='id', output='item/itembasic.data', single=false},
{name='petexp', type='cfg.pet.PetExp', index='level', output='pet/petexp.data', single=false},
{name='expectype', type='cfg.ectype.ExpEctype', index='id', output='ectype/expectype.data', single=false},
{name='buff', type='cfg.buff.Buff', index='id', output='buff/buff.data', single=false},
{name='areocraft', type='cfg.pathfly.Areocraft', index='id', output='pathfly/areocraft.data', single=false},
{name='activitytip', type='cfg.dailyactivity.activitytip', index='', output='dailyactivity/activitytip.data', single=true},
{name='daychargebonus', type='cfg.pay.DayChargeBonus', index='id', output='pay/daychargebonus.data', single=false},
{name='ectypecurveset', type='cfg.map.EctypeCurveSet', index='id', output='map/ectypecurveset.data', single=false},
{name='soundeffects', type='cfg.audio.SoundEffects', index='soundtype', output='audio/soundeffects.data', single=false},
{name='modelactions', type='cfg.skill.ModelActions', index='modelname', output='skill/modelactions.data', single=false},
{name='nextfunctiontips', type='cfg.ui.nextfunctiontips', index='id', output='ui/nextfunctiontips.data', single=false},
{name='monthbonus', type='cfg.bonus.MonthBonus', index='dayscount', output='bonus/monthbonus.data', single=false},
{name='teamstoryectype', type='cfg.ectype.TeamStoryEctype', index='id', output='ectype/teamstoryectype.data', single=false},
{name='wish', type='cfg.bonus.Wish', index='wishitem', output='bonus/wish.data', single=false},
{name='arenaconfig', type='cfg.arena.ArenaConfig', index='', output='arena/arenaconfig.data', single=true},
{name='attrsequence', type='cfg.fight.AttrSequence', index='', output='fight/attrsequence.data', single=true},
{name='teamspeed', type='cfg.ectype.TeamSpeed', index='', output='ectype/teamspeed.data', single=true},
{name='rankbonus', type='cfg.bonus.RankBonus', index='ranktype', output='bonus/rankbonus.data', single=false},
{name='arenamultilist', type='cfg.arena.ArenaMultiList', index='id', output='arena/arenamultilist.data', single=false},
{name='exptable', type='cfg.role.ExpTable', index='level', output='role/exptable.data', single=false},
{name='worldmap', type='cfg.map.WorldMap', index='id', output='map/worldmap.data', single=false},
{name='animtypeselector', type='cfg.skill.AnimTypeSelector', index='type', output='skill/animtypeselector.data', single=false},
{name='plottalk', type='cfg.plot.PlotTalk', index='id', output='plot/plottalk.data', single=false},
{name='blackmarket', type='cfg.family.BlackMarket', index='', output='family/blackmarket.data', single=true},
{name='equipappend', type='cfg.equip.EquipAppend', index='id', output='equip/equipappend.data', single=false},
{name='baozi', type='cfg.bonus.BaoZi', index='mealtype', output='bonus/baozi.data', single=false},
{name='broadcastcfg', type='cfg.tips.BroadcastCfg', index='', output='tips/broadcastcfg.data', single=true},
{name='attackcity', type='cfg.ectype.AttackCity', index='', output='ectype/attackcity.data', single=true},
{name='lotterytypetocfg', type='cfg.lottery.LotteryTypeToCfg', index='type', output='lottery/lotterytypetocfg.data', single=false},
{name='shakemoneytree', type='cfg.shakemoneytree.ShakeMoneyTree', index='', output='shakemoneytree/shakemoneytree.data', single=true},
{name='accessoryconfig', type='cfg.equip.AccessoryConfig', index='', output='equip/accessoryconfig.data', single=true},
{name='paths', type='cfg.pathfly.Paths', index='id', output='pathfly/paths.data', single=false},
{name='petskin', type='cfg.pet.PetSkin', index='id', output='pet/petskin.data', single=false},
{name='name', type='cfg.role.Name', index='', output='role/name.data', single=true},
{name='exchange', type='cfg.exchange.Exchange', index='id', output='exchange/exchange.data', single=false},
{name='uiarea', type='cfg.ui.uiarea', index='id', output='ui/uiarea.data', single=false},
{name='skilldmg', type='cfg.skill.Skilldmg', index='id', output='skill/skilldmg.data', single=false},
{name='familyskillcost', type='cfg.family.FamilySkillCost', index='skillid', output='family/familyskillcost.data', single=false},
{name='drop', type='cfg.bonus.Drop', index='id', output='bonus/drop.data', single=false},
{name='modulehelpinfo', type='cfg.modulehelpinfo.ModuleHelpInfo', index='modulename', output='modulehelpinfo/modulehelpinfo.data', single=false},
{name='arenaectype', type='cfg.ectype.ArenaEctype', index='', output='ectype/arenaectype.data', single=true},
{name='weekendactivitytab', type='cfg.dailyactivity.WeekendActivityTab', index='order', output='dailyactivity/weekendactivitytab.data', single=false},
{name='timertype', type='cfg.common.TimerType', index='id', output='common/timertype.data', single=false},
{name='storyectype', type='cfg.ectype.StoryEctype', index='id', output='ectype/storyectype.data', single=false},
{name='statustext', type='cfg.fight.StatusText', index='attrtype', output='fight/statustext.data', single=false},
{name='dailyactivitytab', type='cfg.dailyactivity.DailyActivityTab', index='order', output='dailyactivity/dailyactivitytab.data', single=false},
{name='title', type='cfg.role.Title', index='id', output='role/title.data', single=false},
{name='currencyectype', type='cfg.ectype.CurrencyEctype', index='id', output='ectype/currencyectype.data', single=false},
{name='amuletskilllvl', type='cfg.equip.AmuletSkillLvl', index='skillid', output='equip/amuletskilllvl.data', single=false},
{name='jewelrylvllimit', type='cfg.equip.JewelryLvlLimit', index='level', output='equip/jewelrylvllimit.data', single=false},
{name='tipscontent', type='cfg.tips.TipsContent', index='id', output='tips/tipscontent.data', single=false},
{name='weapon', type='cfg.equip.weapon.weapon', index='id', output='equip/weapon.data', single=false},
{name='marrigeconfig', type='cfg.friend.MarrigeConfig', index='', output='friend/marrigeconfig.data', single=true},
{name='vipbonus', type='cfg.bonus.VipBonus', index='viplevel', output='bonus/vipbonus.data', single=false},
{name='petstagestar', type='cfg.pet.PetStageStar', index='qualitylevel', output='pet/petstagestar.data', single=false},
{name='modelactiontemplate', type='cfg.skill.ModelActionTemplate', index='modelname', output='skill/modelactiontemplate.data', single=false},
{name='skilllvlupcost', type='cfg.skill.SkillLvlupCost', index='skillid', output='skill/skilllvlupcost.data', single=false},
{name='equipsource', type='cfg.item.EquipSource', index='type', output='item/equipsource.data', single=false},
{name='prologue', type='cfg.ectype.Prologue', index='', output='ectype/prologue.data', single=true},
{name='npc', type='cfg.npc.NPC', index='id', output='npc/npc.data', single=false},
{name='annealitemcost', type='cfg.equip.AnnealItemCost', index='id', output='equip/annealitemcost.data', single=false},
{name='chargebonus', type='cfg.bonus.ChargeBonus', index='bonusid', output='bonus/chargebonus.data', single=false},
{name='talismanfeed', type='cfg.talisman.TalismanFeed', index='id', output='talisman/talismanfeed.data', single=false},
{name='dialogframe', type='cfg.common.DialogFrame', index='id', output='common/dialogframe.data', single=false},
{name='sfxinfo', type='cfg.equip.sfxInfo', index='sfxid', output='equip/sfxinfo.data', single=false},
{name='amuletconfig', type='cfg.equip.AmuletConfig', index='', output='equip/amuletconfig.data', single=true},
{name='storylayout', type='cfg.ectype.StoryLayout', index='id', output='ectype/storylayout.data', single=false},
{name='familyskill', type='cfg.family.FamilySkill', index='skilllvl', output='family/familyskill.data', single=false},
{name='maimairelationship', type='cfg.friend.MaimaiRelationship', index='relationship', output='friend/maimairelationship.data', single=false},
{name='activeevent', type='cfg.active.Activeevent', index='id', output='active/activeevent.data', single=false},
{name='shadow', type='cfg.character.shadow', index='modelpath', output='character/shadow.data', single=false},
{name='achievement', type='cfg.achievement.Achievement', index='id', output='achievement/achievement.data', single=false},
{name='familytaskreward', type='cfg.family.FamilyTaskReward', index='level', output='family/familytaskreward.data', single=false},
{name='worldboss', type='cfg.ectype.WorldBoss', index='id', output='ectype/worldboss.data', single=false},
{name='battlepower', type='cfg.fight.BattlePower', index='', output='fight/battlepower.data', single=true},
{name='rune', type='cfg.ectype.Rune', index='id', output='ectype/rune.data', single=false},
{name='talismanrecycle', type='cfg.talisman.TalismanRecycle', index='', output='talisman/talismanrecycle.data', single=true},
{name='model', type='cfg.character.Model', index='modelname', output='character/model.data', single=false},
{name='revive', type='cfg.role.Revive', index='', output='role/revive.data', single=true},
{name='petawake', type='cfg.pet.PetAwake', index='id', output='pet/petawake.data', single=false},
{name='profession', type='cfg.role.Profession', index='faction', output='role/profession.data', single=false},
{name='plotcall', type='cfg.plot.PlotCall', index='key', output='plot/plotcall.data', single=false},
{name='wildcardprofession', type='cfg.common.WildcardProfession', index='id', output='common/wildcardprofession.data', single=false},
{name='enhanceconfig', type='cfg.equip.EnhanceConfig', index='level', output='equip/enhanceconfig.data', single=false},
{name='annealbonus', type='cfg.equip.AnnealBonus', index='id', output='equip/annealbonus.data', single=false},
{name='uifunctionopen', type='cfg.ui.UIFunctionOpen', index='functionname', output='ui/uifunctionopen.data', single=false},
{name='huiwu', type='cfg.huiwu.HuiWu', index='', output='huiwu/huiwu.data', single=true},
{name='familyjob', type='cfg.family.FamilyJob', index='jobid', output='family/familyjob.data', single=false},
{name='continuityloginbonus', type='cfg.bonus.ContinuityLoginBonus', index='', output='bonus/continuityloginbonus.data', single=true},
{name='bagconfig', type='cfg.bag.BagConfig', index='bagtype', output='bag/bagconfig.data', single=false},
{name='ectyperegionset', type='cfg.map.EctypeRegionSet', index='id', output='map/ectyperegionset.data', single=false},
{name='personalboss', type='cfg.ectype.PersonalBoss', index='ectypeid', output='ectype/personalboss.data', single=false},
{name='accessorycolor', type='cfg.equip.AccessoryColor', index='level', output='equip/accessorycolor.data', single=false},
{name='slowtime', type='cfg.ectype.slowtime', index='id', output='ectype/slowtime.data', single=false},
{name='dailyectype', type='cfg.ectype.DailyEctype', index='id', output='ectype/dailyectype.data', single=false},
{name='multiplayerectype', type='cfg.ectype.MultiPlayerEctype', index='requirelevel', output='ectype/multiplayerectype.data', single=false},
{name='bonusconfig', type='cfg.bonus.BonusConfig', index='', output='bonus/bonusconfig.data', single=true},
{name='broadcast', type='cfg.broadcast.Broadcast', index='', output='broadcast/broadcast.data', single=true},
{name='petskill', type='cfg.pet.PetSkill', index='petid', output='pet/petskill.data', single=false},
{name='equipbindsfx', type='cfg.equip.EquipBindSfx', index='equipid', output='equip/equipbindsfx.data', single=false},
{name='boss', type='cfg.family.Boss', index='bossid', output='family/boss.data', single=false},
{name='careerskilllist', type='cfg.skill.CareerSkillList', index='career', output='skill/careerskilllist.data', single=false},
{name='annealrate', type='cfg.equip.AnnealRate', index='level', output='equip/annealrate.data', single=false},
{name='skillmodelbind', type='cfg.monster.SkillModelBind', index='modelname', output='monster/skillmodelbind.data', single=false},
{name='camera', type='cfg.map.Camera', index='id', output='map/camera.data', single=false},
{name='guardtower', type='cfg.ectype.GuardTower', index='', output='ectype/guardtower.data', single=true},
{name='appendcost', type='cfg.equip.AppendCost', index='type', output='equip/appendcost.data', single=false},
{name='familyparty', type='cfg.family.FamilyParty', index='', output='family/familyparty.data', single=true},
{name='lotterytexture', type='cfg.lottery.LotteryTexture', index='recievedcurrency', output='lottery/lotterytexture.data', single=false},
{name='noviceguide', type='cfg.guide.NoviceGuide', index='id', output='guide/noviceguide.data', single=false},
{name='plotqte', type='cfg.plot.PlotQTE', index='index', output='plot/plotqte.data', single=false},
{name='talismanbasic', type='cfg.talisman.TalismanBasic', index='id', output='talisman/talismanbasic.data', single=false},
{name='itemsource', type='cfg.item.ItemSource', index='id', output='item/itemsource.data', single=false},
{name='dress', type='cfg.equip.Dress', index='id', output='equip/dress.data', single=false},
{name='mail', type='cfg.mail.Mail', index='id', output='mail/mail.data', single=false},
{name='titletypename', type='cfg.role.TitleTypeName', index='typeid', output='role/titletypename.data', single=false},
{name='navigationmode', type='cfg.common.NavigationMode', index='id', output='common/navigationmode.data', single=false},
{name='beginnerbonus', type='cfg.bonus.BeginnerBonus', index='dayscount', output='bonus/beginnerbonus.data', single=false},
{name='pray', type='cfg.family.Pray', index='prayid', output='family/pray.data', single=false},
{name='petwash', type='cfg.pet.PetWash', index='feedid', output='pet/petwash.data', single=false},
{name='ectypesingle', type='cfg.ectype.EctypeSingle', index='', output='ectype/ectypesingle.data', single=true},
{name='storynote', type='cfg.storynote.StoryNote', index='chapterid', output='storynote/storynote.data', single=false},
{name='playeractioncrossfade', type='cfg.skill.PlayerActionCrossFade', index='id', output='skill/playeractioncrossfade.data', single=false},
{name='mineral', type='cfg.mine.Mineral', index='id', output='mine/mineral.data', single=false},
{name='familybonus', type='cfg.bonus.FamilyBonus', index='bonusid', output='bonus/familybonus.data', single=false},
{name='lotteryitemoffset', type='cfg.lottery.LotteryItemOffset', index='itemid', output='lottery/lotteryitemoffset.data', single=false},
{name='noviceguideset', type='cfg.guide.NoviceGuideSet', index='id', output='guide/noviceguideset.data', single=false},
{name='heroectype', type='cfg.ectype.HeroEctype', index='id', output='ectype/heroectype.data', single=false},
{name='jewelry', type='cfg.equip.Jewelry', index='jewelryid', output='equip/jewelry.data', single=false},
{name='plotassets', type='cfg.plot.PlotAssets', index='index', output='plot/plotassets.data', single=false},
{name='tasktype', type='cfg.common.TaskType', index='id', output='common/tasktype.data', single=false},
{name='amuletwash', type='cfg.equip.AmuletWash', index='', output='equip/amuletwash.data', single=true},
{name='jewelrylvlup', type='cfg.equip.JewelryLvlUp', index='jewelrylvl', output='equip/jewelrylvlup.data', single=false},
{name='activebonus', type='cfg.active.Activebonus', index='grade', output='active/activebonus.data', single=false},
{name='maploading', type='cfg.map.MapLoading', index='texturename', output='map/maploading.data', single=false},
{name='slotbagconfig', type='cfg.bag.SlotBagConfig', index='', output='bag/slotbagconfig.data', single=true},
{name='petbasicstatus', type='cfg.pet.PetBasicStatus', index='id', output='pet/petbasicstatus.data', single=false},
{name='findback', type='cfg.active.Findback', index='lv', output='active/findback.data', single=false},
{name='monstervoice', type='cfg.monster.MonsterVoice', index='voiceid', output='monster/monstervoice.data', single=false},
{name='task', type='cfg.task.Task', index='id', output='task/task.data', single=false},
{name='annealitemuselimit', type='cfg.equip.AnnealItemUseLimit', index='id', output='equip/annealitemuselimit.data', single=false},
{name='operationalactivity', type='cfg.operationalactivity.OperationalActivity', index='type', output='operationalactivity/operationalactivity.data', single=false},
{name='effect', type='cfg.buff.Effect', index='id', output='buff/effect.data', single=false},
{name='familyinfo', type='cfg.family.FamilyInfo', index='familylvl', output='family/familyinfo.data', single=false},
{name='dropmodel', type='cfg.bonus.DropModel', index='itemid', output='bonus/dropmodel.data', single=false},
{name='petfragment', type='cfg.pet.PetFragment', index='id', output='pet/petfragment.data', single=false},
{name='commoneffect', type='cfg.commoneffect.CommonEffect', index='id', output='commoneffect/commoneffect.data', single=false},
{name='jade', type='cfg.equip.Jade', index='jadelvl', output='equip/jade.data', single=false},
{name='riding', type='cfg.equip.Riding', index='id', output='equip/riding.data', single=false},
{name='talismanhelpinfo', type='cfg.talisman.TalismanHelpInfo', index='indexname', output='talisman/talismanhelpinfo.data', single=false},
{name='monthlycard', type='cfg.bonus.MonthlyCard', index='dayscount', output='bonus/monthlycard.data', single=false},
{name='flyingswordheight', type='cfg.equip.FlyingSwordHeight', index='id', output='equip/flyingswordheight.data', single=false},
{name='timer', type='cfg.common.Timer', index='id', output='common/timer.data', single=false},
{name='dialog', type='cfg.ui.Dialog', index='dlgname', output='ui/dialog.data', single=false},
{name='growup', type='cfg.active.Growup', index='systemid', output='active/growup.data', single=false},
{name='tracecurve', type='cfg.skill.TraceCurve', index='id', output='skill/tracecurve.data', single=false},
{name='talismanevlove', type='cfg.talisman.TalismanEvlove', index='level', output='talisman/talismanevlove.data', single=false},
{name='lockobject', type='cfg.guide.LockObject', index='id', output='guide/lockobject.data', single=false},
{name='petai', type='cfg.pet.PetAi', index='id', output='pet/petai.data', single=false},
{name='circleregionset', type='cfg.map.CircleRegionSet', index='id', output='map/circleregionset.data', single=false},
{name='ectypebasic', type='cfg.ectype.EctypeBasic', index='id', output='ectype/ectypebasic.data', single=false},
{name='equipsuits', type='cfg.equip.EquipSuits', index='id', output='equip/equipsuits.data', single=false},
{name='transport', type='cfg.map.Transport', index='', output='map/transport.data', single=true},
{name='petkarma', type='cfg.pet.PetKarma', index='id', output='pet/petkarma.data', single=false},
{name='fragment', type='cfg.equip.Fragment', index='id', output='equip/fragment.data', single=false},
{name='familyshop', type='cfg.family.FamilyShop', index='shoplevel', output='family/familyshop.data', single=false},
{name='equip', type='cfg.equip.Equip', index='id', output='equip/equip.data', single=false},
{name='growplan', type='cfg.bonus.GrowPlan', index='daycount', output='bonus/growplan.data', single=false},
{name='jewelryget', type='cfg.equip.JewelryGet', index='getlevel', output='equip/jewelryget.data', single=false},
{name='camprelation', type='cfg.fight.CampRelation', index='camp', output='fight/camprelation.data', single=false},
{name='ectypegrade', type='cfg.ui.EctypeGrade', index='index', output='ui/ectypegrade.data', single=false},
{name='passiveskill', type='cfg.skill.PassiveSkill', index='id', output='skill/passiveskill.data', single=false},
{name='mallnpc', type='cfg.mall.MallNPC', index='malltype', output='mall/mallnpc.data', single=false},
{name='landscape', type='cfg.map.LandScape', index='id', output='map/landscape.data', single=false},
}) do
local fs = create_datastream(s.output)
local method = 'get_' .. s.type:gsub('%.', '_')
if not s.single then
local c = {}
for i = 1, fs:get_int() do
local v = fs[method](fs)
c[v[s.index]] = v
end
cfgs[s.name] = c
else
if fs:get_int() ~= 1 then error('single config size != 1') end
cfgs[s.name] = fs[method](fs)
end
fs:close()
end
return cfgs